﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Toenda.Foundation.IO.Compression {
	/// <summary>
	/// Implements the event arguments for the calculation state event
	/// </summary>
	public class CompressionStateEventArgs : EventArgs {
		/// <summary>
		/// Gets or sets the compressed bytes
		/// </summary>
		public long CompressedBytes { get; set; }

		/// <summary>
		/// Gets or sets the file size
		/// </summary>
		public long FileSize { get; set; }

		/// <summary>
		/// Gets or sets the message
		/// </summary>
		public string Message { get; set; }

		/// <summary>
		/// Gets or sets the complete compression time
		/// </summary>
		public TimeSpan CompressionTime { get; set; }

		/// <summary>
		/// Creates a new instance of <see cref="CompressionStateEventArgs"/>.
		/// </summary>
		public CompressionStateEventArgs() {
		}

		/// <summary>
		/// Creates a new instance of <see cref="CompressionStateEventArgs"/>.
		/// </summary>
		/// <param name="compressedBytes"></param>
		/// <param name="fileSize"></param>
		/// <param name="message">The message of the current step.</param>
		/// <param name="compressionTime">The loading time of the current step.</param>
		public CompressionStateEventArgs(long compressedBytes, long fileSize, string message, TimeSpan compressionTime) {
			this.CompressedBytes = compressedBytes;
			this.FileSize = fileSize;
			this.Message = message;
			this.CompressionTime = compressionTime;
		}
	}
}
